A person often uses several computer systems to process the same data. For example, at work, a user can utilize a desktop computer connected by a LAN to a company server to write and send an email to intended recipient. The user might choose to save a copy of the email on both the server and the desktop computer. On the way home, the user may utilize a mobile data communication device (handheld device) having a wireless link to the server to access the copy of the email. Finally, at home, the user may use a laptop computer to download (via a cable modem, for example) the email from the server. After modifying the email using the laptop computer, the user can send the modified email to a second intended recipient. The presence of a plurality of computer systems used to manage the same data presents unique problems that fall under the rubric of “synchronization.” Synchronization systems and methods strive to efficiently manage and replicate the same data in various systems.
Such systems and methods for managing and replicating information, such as a draft of an email, from a host system, which can include a company server, to a handheld device typically store the draft on the host system for an indefinite period of time and then transmit in bulk only in response to a user request. When replication of the stored email draft to the handheld device is desired, the user typically places the handheld device in an interface cradle that is electrically connected to the host system via some form of local, dedicated communication link, whether physical, such as a serial cable, or wireless, such as by using infrared signals. Software executing on the handheld device then transmits commands via the local communication link to the host system to cause the host to begin transmitting the user's data to the handheld device.
In these synchronization schemes, the handheld device “pulls” the stored information from the host system in a batch each time the user desires to replicate information among the host system and the handheld device. Therefore, the two systems (host and handheld) only maintain the same data items after a user-initiated command sequence that causes the handheld device to download the data items from the host system.
The above methods and systems of synchronizing have several drawbacks. First, replicating information is contingent on the user remembering to perform some action for the purpose of synchronizing. If the user forgets to perform this action, no synchronization takes place. Second, with the current pull-based systems, the user must deal with the same email twice: on the handheld device and on the host system (e.g., desktop or server) at the office. When many emails have to be processed, this can prove to be quite a nuisance. For example, in e-mail systems where internal company mail and external Internet mail merge into one common mailbox, the average user can receive hundreds of pieces of electronic information a day in one location. As a result, once the user returns to the office, even though the user may have seen and read the mail on the handheld device while traveling, the user has to re-read the messages and then organize the information into folders based on the content. In such case, the handheld device does not lessen the amount of emails that have to be processed when the user returns to the office from a period of travel. Third, because traditional systems rely on a user action to pull data from the host system, emails may not be received in a timely fashion. Thus, if a user causes emails to be transmitted to the handheld device, five minutes later a new message could be sent to the user, but the user would not receive that message until the next time the user fetches the user data items. Thus, a user may fail to respond to an emergency update or message because the user only periodically synchronizes the system, such as once per day. Fourth, the amount of data to be synchronized between the host system and the handheld device can become large if the user does not synchronize on a daily or hourly basis. Large amounts of data lead to bandwidth difficulties, particularly when the handheld device is communicating via a wireless packet-switched network. Fifth, synchronizing the large amounts of data that can accumulate in typical batch-mode synchronization systems can require a great deal of communication between the host and the mobile device, thus leading to a more complex, costly and energy-inefficient system